package songZhao.MinaDemo.SessionAttribute;

import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.AttributeKey;
import org.apache.mina.core.session.IoSession;
/**
 * 这里只是测试下session 的attribute携带的对象.
 * 这里说下明明规则
 *  AttributeKey key = new AttributeKey(SomeXXX.class, "keyName");
 *  This will create the SomeXXX.keyName@7DE45C99 key which will be stored in the session map.
 * @author Administrator
 * 
 * 这样的话,我们就可以在session中创建一个上下文的对象,用来处理不少问题:
 * 例如解决数据传输中的数据完整性问题.比如我们自定义的报文,接受的时候可能会出现
 * 报文不全等情况.
 * 
 */

public class AttributeDemoHandler extends IoHandlerAdapter{

	@SuppressWarnings("deprecation")
	@Override
	public void sessionCreated(IoSession session) throws Exception {
		//生成属性的键值,即属性的名称.即键
		AttributeKey key = new AttributeKey(this.getClass(), "something");
		//SomeThing的beans作为属性的内容.即值
		SomeThing someThing = new SomeThing("aaa", "bbb");
		//为session 设置属性
		session.setAttribute(key, someThing);
		
		System.out.println("sessionCreated");
		session.write("this is enough,thx.");
		//根据键key,来获取属性的值,值是一个对象.
		System.out.println(session.getAttribute(key));
		session.close();
		System.exit(0);
	}
}
